/**
 * 部门选择器
 */

var XtyylxSelector = {
	/**
	 * @param callback
	 *            回调函数
	 * @param isSingle
	 *            是否单选
	 */
	getView : function(callback, ids, values, isSingle) {
		var depcheckchange = function(node, checked) {
			// treeRight.root.setId(node.id);
			// treeRight.root.reload();
			var flg = false;
			// if (!node.isLeaf()) {
			if (checked) {
				node.parentNode.getUI().toggleCheck(true);
				node.eachChild(function(n) {
							if (n.getUI().isChecked()) {
								flg = true;
								return;
							}
						});
				if (flg == false) {
					node.eachChild(function(n) {
								if (n.getUI().isChecked() == false) {
									n.getUI().toggleCheck(true)
								}
							});
				}
				node.getUI().addClass('x-tree-node-checked');
			} else {
				node.parentNode.eachChild(function(n) {
							if (n.getUI().isChecked()) {
								flg = true;
								return;
							}
						})
				if (flg == false) {
					// node.parentNode.getUI().toggleCheck(false)
				}
				node.getUI().removeClass('x-tree-node-checked');
				node.eachChild(function(n) {
							if (n.getUI().isChecked()) {
								flg = true;
								return;
							}
						});
				if (flg == true) {
					node.eachChild(function(n) {
								if (n.getUI().isChecked()) {
									n.getUI().toggleCheck(false)
								}
							});
				}
			}
			if (isSingle) {
				treeDept.root.cascade(function(n) {
							n.getUI().toggleCheck(false);
						})
			}
		};
		var treeDept = new Ext.tree.TreePanel({
					title : '系统考试类型显示',
					width : 180,
					animate:false,
					height : 300,
					split : true,
					collapsible : true,
					autoScroll : true,
					selModel : isSingle
							? new Ext.tree.DefaultSelectionModel()
							: new Ext.tree.MultiSelectionModel(),
					bbar : new Ext.Toolbar({
								items : [{
											xtype : 'button',
											iconCls : 'btn-refresh',
											text : '刷新',
											handler : function() {
												treeDept.root.reload();
											}
										}, {
											xtype : 'button',
											text : '展开',
											iconCls : 'btn-expand',
											handler : function() {
												treeDept.expandAll();
											}
										}, {
											xtype : 'button',
											text : '收起',
											iconCls : 'btn-collapse',
											handler : function() {
												treeDept.collapseAll();
											}
										}]
							}),
					loader : new Ext.tree.TreeLoader({
								url : _ctxPath + '/genXtyylxTree.do'
							}),
					root : new Ext.tree.AsyncTreeNode({
								id : -1,
								expanded : true
							}),
					rootVisible : false,
					listeners : {
						'click' : function(node, e) {
							if (node != null) {
								if (isSingle) {
									treeDept.root.cascade(function(n) {
												n.getUI().toggleCheck(false);
											})
								}
								var flg = node.getUI().isChecked();
								if (!flg) {
									node.getUI().toggleCheck(true);
								} else {
									node.getUI().toggleCheck(false);
								}
							}
						},
						'checkchange' : isSingle ? function() {
						} : depcheckchange,
						'dblClick' : function(node, e) {
							var deptIds = node.id;
							var deptNames = node.text;
							if (callback != null) {
								callback.call(this, deptIds, deptNames);
							}
							window.close();
						}
					}
				});
		// panel-------------------------------------
		treeDept.expandAll();
		var window = new Ext.Window({
					title : '系统考试类型选择器' + (isSingle ? '（单选）' : '（多选）'),
					width : 200,
					height : 380,
					border : false,
					items : [treeDept],
					deptal : true,
					buttonAlign : 'center',
					buttons : [{
						text : '确定',
						iconCls : 'btn-save',
						handler : function() {
							var nodes, deptIds, deptNames;
							if (isSingle) {
								nodes = treeDept.getSelectionModel()
										.getSelectedNode();
								if (nodes == null) {
									nodes = treeDept.root.findChild();
								}
								deptIds = nodes.id;
								deptNames = nodes.text;
							} else {
								var selNodes = treeDept.getChecked();
								var ids = [], names = [];
								Ext.each(selNodes, function(node) {
											ids.push(node.id);
											names.push(node.text);
										});
								deptIds = ids.join();
								deptNames = names.join();
							}

							if (callback != null) {
								callback.call(this, deptIds, deptNames);
							}
							window.close();
						}
					}, {
						text : '取消',
						iconCls : 'btn-cancel',
						handler : function() {
							window.close();
						}
					}]
				});
		return window;
	}

};